home *** CD-ROM | disk | FTP | other *** search
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- PROFILE (1) Program Execution Profiler PROFILE (1)
-
-
- NAME NAME
- profile - program profiler
-
- SYNOPSIS SYNOPSIS
- profile program progarg1 progarg2 progargn profile program progarg1 progarg2 .. progargn
-
- DESCRIPTION DESCRIPTION
- profile profile is used to determine where a program spends most of
- its time executing, in order to determine where in that
- program it will be profitable to optimize. When invoked, it
- program progarg1 progarg2 will run program ,passing along progarg1 progarg2 ..
- progargn program s progargn as program's command line. After the program
- being profiled terminates, a list of addresses is printed to
- the standard output, along with the number of times the
- program profiler interrupted program at that address.
-
- SH EXAMPLE
- profile tester.exe
- cs=607c
- 003c : 40
- 0040 : 141
- 0044 : 12
- 0048 : 5
- 004c : 1
- 0050 : 8
- 0054 : 3
- 0058 : 7
- 0060 : 10
- 0064 : 5
- 0068 : 8
- 0710 : 1
-
- tester exe What happened here is that tester.exe was executed, and that
- profile profile was of the opionion that it spent most of its time
- right around cs:0040.
-
-
- IMPLEMENTATION IMPLEMENTATION
- Profile Profile is only able to interrupt the program being profiled
- 18.2 times per second. That means that in order to get
- meaningful results, your program must take longer than a few
- seconds to execute, and that it not be I/O bound. That,
- fortunately, is a fairly good definition of the sort of
- programs that need profiling.
-
- cs 607c You may have noticed that in the above example that cs=607c
- was printed out before the profile information. That
- regs exe message was actually printed by the program regs.exe, that
- profile com was invoked by profile.com to determine where MSDOS was
- Regs exe going to load tester.exe. Regs.exe figures out where its
- loaded, and writes this out to a temporary file called
- register profile com register, which profile.com then reads in. This process is
- necessary because there is no other way to determine wher
- MS-DOS is going to load a program.
-
-
-
-
-
-
- -1-
-
-
- PROFILE (1) Program Execution Profiler PROFILE (1)
-
-
- Even stranger, it is necessary to also have the program
- regs com com regs.com available if you want to profile a '.com' program,
- com as MS-DOS puts '.com' programs in a different place than
- exe '.exe' programs.
-
- This program was compiled with the Manx Aztec C86 compiler.
- I have put in conditional assembly flags to ease using
- Lattice, but there is one difference that will have to be
- fexecv dealt with. The Aztec fexecv library function expects the
- exe com .exe|.com extension in its specified file name, where
- forkv Lattice's forkv does not. So, you will have to use a
- different method than I did to determine whether a program
- com exe is an .com or a .exe program. I might suggest opening the
- exe file and looking for the .exe 'magic number' bytes at the
- beginning of the file (4DH and 5A). This will unfortunately
- slow things down a bit more, but that's life in PC-DOS.
-
- The assembly source files might need some massaging to
- coincide with the way Lattice wants the segments defined in
- assembly subroutines. I didn't bother to put in conditional
- assembly directive to accomadate Lattice, because the
- conversion process should be straightforward, and a good
- excersise for 'porting hackers.'
-
- If anyone out there cares, the Manx Aztec C86 compiler
- (version 3 and later) makes the Lattice compiler look pretty
- limp, and is a lot more straightforward to work with.
- Documentation and supporting tools are excellent, and
- performance is unparalleled. It lives up to the claims in
- their somewhat incoherent ads, and I'd recommend it to
- anyone doing serious work with C.
-
- ENHANCEMENTS ENHANCEMENTS
- A more graphic way of displaying profiler results would be
- nice, but a more useful enhancement would be to merge
- profile s profile's output with the symbol table output of your
- compiler of choice.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -2-
-